Synchronization and reconciliation of multiple versions is a necessary process in many contexts. For example, object-oriented programming involves the interaction among a plurality of objects to implement a computer application. Each object includes data fields and associated procedures (methods). Distributed objects are spread over multiple computers or multiple processors within a computer. Different objects may be managed by different users on different systems. For example, an object may be edited by one user to create a new object while the object is modified by another user. More than one editor may modify the same object. Ultimately, synchronization and reconciliation are needed to clarify the hierarchy and most recent version that should be used when the objects interact with each other.
One of the current approaches to managing multi-version environments is by maintaining a single-version-of-truth. In a distributed object system, for example, this involves a single server managing all the objects and permitting only one client to work with the same object at a time. Changes made and committed at the client are reflected in the version maintained by the server. An object check-out and check-in process may be used to implement the single-version-of-truth approach.